/* 
 * File:   Constant.h
 * Author: Gab'z
 *
 * Created on 27 mai 2012, 21:45
 */

#ifndef CONSTANT_H
#define	CONSTANT_H

#include "Literal.h"

namespace calculator {

    /**
     * Element de base des Stack.
     * Classe non instanciable, il s'agit soit d'un Number, soit d'une Expression.
     */
    class Constant : public Literal {
    public:

        /**
         * Execute une Constant
         * Consiste à empiler la Constant sur la Stack courante
         */
        virtual void execute() const throw (CommandException);

        /**
         * Clone la Constant.
         * @return une copie de la Constant.
         */
        virtual Constant* clone() const = 0;

        /**
         * Destructeur de Constant.
         */
        virtual ~Constant();

    protected:

        /**
         * Constructeur de Constant.
         */
        Constant();

    private:
        static Logger* log;
    };
}

#endif	/* CONSTANT_H */
